/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;

import dao.DAOFactory;
import dao.ProdutoDAO;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import model.Produto;
import ordenacao.OrdenacaoPorCodigoProduto;
import ordenacao.OrdenacaoPorDescricaoProduto;
import utils.ExcecaoSCEV;




public class CtrCadastroCategoria {
    private static CtrCadastroCategoria umCtrCadastroCategoria;
    CategoriaDAO categoriaDAO;
    
    
    private CtrCadastroCategoria(){
        
        DAOFactory daoFactory = new DAOFactory();
     categoriaDAO = daoFactory.getCategoriaDAO();
    }
     public static CtrCadastroCategoria getInstance(){
        if (umCtrCadastroCategoria == null){
            umCtrCadastroCategoria = new CtrCadastroCategoria();
        }
        return umCtrCadastroCategoria;
    }

     public List <Produto> listarTodos(int ordenacao) throws ExcecaoSCEV{
        List <Categoria>lista = new ArrayList <Categoria>();
        lista = categoriaDAO.pegarTodos();
        ordenar(ordenacao, lista);
        return lista;
    }
     
     private boolean validar(Produto produto) throws ExcecaoSCEV {

        if(categoria.getCodigoCategoria() == null || categoria.getCodigoCategoria().equals("")){
            throw new ExcecaoSCEV("Codigo deve ser preenchido");
        }
        if(categoria.getDescricao() == null || categoria.getDescricao().trim().equals("")){
            throw new ExcecaoSCEV("Nome deve ser preenchido");
        }
        if (categoria.getDesconto() == null || categoria.getDesconto().equals("")){
            throw new ExcecaoSCEV("Desconto deve ser preenchido");
        }
        return true ;
    }
     
     public void incluir (Categoria categoria) throws ExcecaoSCEV {
        try {
            if (validar(categoria))
              categoriaDAO.incluir(categoria);
        } catch (ExcecaoSCEV ex)  {
            throw new ExcecaoSCEV(ex.getMsg());
        }

    }

    public void alterar (Categoria categoria) throws ExcecaoSCEV {
        try {
            if (validar(categoria))
                categoriaDAO.alterar(categoria);
        } catch (ExcecaoSCEV ex)  {
            throw new ExcecaoSCEV(ex.getMsg());
        }

    }

        public void excluir (Categoria categoria) throws ExcecaoSCEV {
        try {
            categoriaDAO.excluir(categoria);
        } catch (ExcecaoSCEV ex)  {
            throw new ExcecaoSCEV(ex.getMsg());
        }

    }

    public void carregar(Categoria categoria) throws ExcecaoSCEV {
        try {
            categoriaDAO.carregar(categoria);
        } catch (ExcecaoSCEV ex)  {
            throw new ExcecaoSCEV(ex.getMsg());
        }
    }
}
